/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy.
 */
package cz.pecinovsky.english.pojj.adv_framework.game_txt;



/*******************************************************************************
 * Instance rozhraní {@code ICommand} mají na starosti interpretaci příkazů
 * zadávaných uživatelem hrajícím hru.
 * <p>
 * Název spouštěného příkazu bývá většinou první slovo řádku zadávaného
 * z klávesnice a další slova pak bývají intrpretována jako parametry.
 * Můžete ale definovat příkaz, který odstartuje konverzaci
 * (např. s osobou přítomnou v místnosti) a tím přepne systém do režimu,
 * v němž mu předává všechny následující odpovědi až do chvíle,
 * kdy uživatel rozhovor ukončí a objekt rozhovoru přepne hru zpět
 * do režimu klasických příkazů.
 *
 * @author    Rudolf PECINOVSKÝ
 * @version   5.0
 */
public interface ICommand extends INamed
{
//== VEŘEJNÉ KONSTANTY =========================================================
//== DEKLAROVANÉ METODY ========================================================

    /***************************************************************************
     * Vrátí název příkazu, tj. text, který musí hráč zadat
     * pro vyvolaní daného příkazu.
     *
     * @return Název příkazu
     */
    @Override
    public String getName();


    /***************************************************************************
     * Vrátí popis příkazu s vysvětlením jeho funkce
     * a významu jednotlivých parametru.
     *
     * @return Popis příkazu
     */
//    @Override
    public String getDescription();


    /***************************************************************************
     * Metoda realizující reakci hry na zadaní daného příkazu.
     * Počet parametrů je závislý na konkrétním příkazu, např. příkazy konec
     * a nápověda nemají parametry, příkazy jdi a seber maji jeden parametr
     * příkaz použij muže mít dva parametry atd.
     *
     * @param parametry Parametry příkazu;
     *                  jejich počet muže byt pro každý příkaz jiný
     * @return Text zprávy vypsané po provedeni příkazu
     */
//    @Override
    public String execute( String... parametry );



//== ZDĚDĚNÉ METODY ============================================================
//== INTERNÍ DATOVÉ TYPY =======================================================
}
